Designating Automated Agents as Friends in Social Network Service

ABSTRACT

A system is described in which a user can add one or more automated agents as “friends” in a social network service. In operation, an automated agent observes an information need expressed by the user via the social network service, e.g., in the form of an original message posted to the social network service; determines whether it is appropriate to reply to the information need; uses automated functionality to generate a reply message to the information need (if it is deemed appropriate to reply to the information need); and sends the reply message to a target destination, such as a social network page associated with the user. For example, without limitation, one type of automated agent performs a question-answering function. Another type of automated agent performs a social referral service.

This application is a continuation patent application of applicationSer. No. 13/162,608, (attorney docket no. 332286.01) filed Jun. 17,2011, entitled “DESIGNATING AUTOMATED AGENTS AS FRIENDS IN A SOCIALNETWORK SERVICE”, which is now allowed, and which is acontinuation-in-part of Ser. No. 12/756,202, (attorney docket no.328248.01) filed on Apr. 8, 2010, entitled, “INTEGRATING A SEARCHSERVICE WITH A SOCIAL NETWORK RESOURCE”, which is still pending. Theaforementioned application(s) are incorporated herein by reference.

BACKGROUND

A user commonly retrieves information from online resources using asearch engine, such as the Bing™ search engine provided by MicrosoftCorporation of Redmond, Wash. In this approach, the user submits asearch query that includes one or more key terms. The search engineresponds by identifying and forwarding results that match the searchquery.

A user can also obtain information by interacting with one or more humancontacts using a social network service. Well known examples of suchservices include Facebook, Inc. of Palo Alto, Calif., MySpace of BeverlyHills, Calif., and LinkedIn of Mountain View, Calif., etc. In this typeof service, a user may create a profile and establish links to otherusers who also maintain profiles on the service. Yet another populartype of social network service is Twitter of San Francisco, California.In this type of service, a user can send short messages (i.e., “tweets”)to recipients (i.e., “followers”) who wish to receive these messages.

The above-mentioned types of social network services are predominantlyused to provide information to recipient users who wish to receive it.But users sometimes use these services to actively pose questions. Forexample, a user can pose a question in the form of a status message in auser page provided by the Facebook service; or a user can send out a“tweet” that poses a question using the Twitter service. A friend orfollower can manually reply to the question by posting a response to astatus message or sending a response “tweet,” respectively.

Search engines and social network services have respective strengths andweaknesses as tools for answering a user's questions. In view thereof,some efforts have been made to combine features of search engines andsocial network services. Yet there remains room for improvement in suchhybrid type of systems.

SUMMARY

A system is described in which a user can add one or more automatedagents as “friends” in a social network service, e.g., by designatingthose agents as contacts as if they were human friends. In operation, anautomated agent observes an indication of an information need expressedvia the social network service; determines whether it is appropriate toreply to the information need; generates a reply message to theinformation need (if it is deemed appropriate to reply to theinformation need); and sends the reply to a target destination, such asa social network page associated with the user, at the appropriate time.In one example, the information need can be expressed by an originalmessage (or plural messages) posted to the social network service.

A user can select from among different automated agents which performdifferent respective functions. For example, one type of automated agentperforms a question-answering function. Another type of automated agentperforms a social referral service. The Detailed Description sets forthadditional types of automated agents.

The above approach can be manifested in various types of systems,components, methods, computer readable media, data structures, articlesof manufacture, and so on.

This Summary is provided to introduce a selection of concepts in asimplified form; these concepts are further described below in theDetailed Description. This Summary is not intended to identify keyfeatures or essential features of the claimed subject matter, nor is itintended to be used to limit the scope of the claimed subject matter.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows an overview of a system that includes one or more automatedagents, any of which can be selected as “friend” in a social networkservice.

FIG. 2 shows one illustrative implementation of the system of FIG. 1.

FIG. 3 shows one illustrative implementation of an automated agentmodule that can be used in the system of FIG. 2.

FIG. 4 shows one illustrative implementation of a composite-typeautomated agent that can be used in the system of FIG. 2.

FIG. 5 shows one illustrative implementation of logging functionalitythat can be used in the system of FIG. 2. The logging functionalityprovides collected information that can be used to improve theperformance of a search engine or any automated agent or some othertarget functionality.

FIGS. 6-11 show examples of the operation of different types ofautomated agents.

FIG. 12 shows an example of the operation of an automated agent thatinteracts with a type of social network service that involves thesending and receiving of short messages.

FIG. 13 shows an example of the generation of a direct message that mayprompt an automated agent to send, in response, a private reply message.

FIG. 14 shows an example of the operation of an automated agent thatresponds, at least in part, to a reply message authored by a humancontact.

FIG. 15 shows an example of a message that an automated agent directlysends to a human contact.

FIG. 16 is a flowchart that shows, respectively, procedures forreceiving indications that a user has added and removed an automatedagent as a friend.

FIG. 17 is a flowchart that shows, respectively, procedures forreceiving indications that a user has added and removed an automatedagent as a friend.

FIG. 18 is a flowchart that shows an overview of one manner of operationof the automated agent.

FIG. 19 is a flowchart that shows one manner by which an automated agentcan decide whether to respond to a message.

FIG. 20 is a flowchart that shows one manner by which an automated agentcan generate a response to a message.

FIG. 21 is a flowchart that shows one manner of operation of anautomated agent that performs a question-answering function.

FIG. 22 is a flowchart that shows one manner of operation of anautomated agent that performs a social referral function.

FIG. 23 is a flowchart that shows one manner of operation of loggingfunctionality.

FIG. 24 shows illustrative computing functionality that can be used toimplement any aspect of the features shown in the foregoing drawings.

The same numbers are used throughout the disclosure and figures toreference like components and features. Series 100 numbers refer tofeatures originally found in FIG. 1, series 200 numbers refer tofeatures originally found in FIG. 2, series 300 numbers refer tofeatures originally found in FIG. 3, and so on.

DETAILED DESCRIPTION

This disclosure is organized as follows. Section A describes anillustrative system that enables users to add automated agents as“friends” in one or more social network services. Section B describesillustrative methods which explain the operation of the system ofSection A. Section C describes illustrative computing functionality thatcan be used to implement any aspect of the features described inSections A and B.

As a preliminary matter, some of the figures describe concepts in thecontext of one or more structural components, variously referred to asfunctionality, modules, features, elements, etc. The various componentsshown in the figures can be implemented in any manner by any physicaland tangible mechanisms (for instance, by software, hardware, firmware,etc., and/or any combination thereof). In one case, the illustratedseparation of various components in the figures into distinct units mayreflect the use of corresponding distinct physical and tangiblecomponents in an actual implementation. Alternatively, or in addition,any single component illustrated in the figures may be implemented byplural actual physical components. Alternatively, or in addition, thedepiction of any two or more separate components in the figures mayreflect different functions performed by a single actual physicalcomponent. FIG. 24, to be discussed in turn, provides additional detailsregarding one illustrative physical implementation of the functionsshown in the figures.

Other figures describe the concepts in flowchart form. In this form,certain operations are described as constituting distinct blocksperformed in a certain order. Such implementations are illustrative andnon-limiting. Certain blocks described herein can be grouped togetherand performed in a single operation, certain blocks can be broken apartinto plural component blocks, and certain blocks can be performed in anorder that differs from that which is illustrated herein (including aparallel manner of performing the blocks). The blocks shown in theflowcharts can be implemented in any manner by any physical and tangiblemechanisms (for instance, by software, hardware, firmware, etc., and/orany combination thereof).

As to terminology, the phrase “configured to” encompasses any way thatany kind of physical and tangible functionality can be constructed toperform an identified operation. The functionality can be configured toperform an operation using, for instance, software, hardware, firmware,etc., and/or any combination thereof.

The term “logic” encompasses any physical and tangible functionality forperforming a task. For instance, each operation illustrated in theflowcharts corresponds to a logic component for performing thatoperation. An operation can be performed using, for instance, software,hardware, firmware, etc., and/or any combination thereof. Whenimplemented by a computing system, a logic component represents anelectrical component that is a physical part of the computing system,however implemented.

The following explanation may identify one or more features as“optional.” This type of statement is not to be interpreted as anexhaustive indication of features that may be considered optional; thatis, other features can be considered as optional, although not expresslyidentified in the text. Similarly, the explanation may indicate that oneor more features can be implemented in the plural (that is, by providingmore than one of the features). This statement is not be interpreted asan exhaustive indication of features that can be duplicated. Finally,the terms “exemplary” or “illustrative” refer to one implementationamong potentially many implementations.

A. Illustrative Systems

FIG. 1 shows an overview of an illustrative system 100 that includes atleast one social network module 102. The social network module 102implements a social network service. The social network service allowsany user to interact with a group of human social contacts 104 (referredto for brevity below as “human contacts” or simply “friends”). The humancontacts can have any relationship to the user. In one method ofinteraction, a user may post a message using the social network service.The human contacts may then visit the user's page(s) (and/or any otherpage or forum or mechanism by which the message is accessible) to readthe message and optionally respond to the message. In another method ofinteraction, a user may use the social network service to generate anddistribute a short message to his or her human contacts.

The types of social network interaction mentioned above arerepresentative, not exhaustive. Alternative types of social networkservices accommodate interaction via blogs, Email messaging, instantmessaging, real-time voice communication (e.g., voice-over-IP), etc. Ineach case, the social network service includes some mechanism forallowing the user to choose his or her group of human contacts 104,followed by some mechanism for allowing the user to interact with thehuman contacts 104.

The system 100 of FIG. 1 also allows the user to choose one or moreautomated agents 106 as contacts. As such, the user's complete set ofcontacts 108 can include both the human contacts 104 and automatedagents 106. The automated agents pertain to computer-implementedmodules, rather than human agents. But the automated agents performroles and engage in interactions that are otherwise analogous to humancontacts. For example, in one implementation, the automated agents canread and respond to the messages that the user posts via the socialnetwork service using the same methods of interaction as a humancontact.

More generally, an automated agent addresses an information needexpressed via the social network module 102. In some cases, theinformation need can be explicitly expressed via the social networkmodule 102. For example, a user may explicitly post a message via thesocial network module 102 which poses a question or otherwise evinces aninformation need. Alternatively, or in addition, an automated agent caninfer the information need based on other information expressed via thesocial network module. For example, the automated agent can also baseits response, at least in part, on profile information maintained by thesocial network module 102. However, to facilitate explanation, it willhenceforth be assumed that posted messages comprise the primary vehiclethrough which users express their information need.

The automated agents perform different respective functions and may alsohave different styles (e.g., “personalities”). For example, one type ofautomated agent performs a question-answering function. Here, theautomated agent may perform a search or other form of informationretrieval on the basis of information extracted from a message posted bya user via a social network service. The automated agent then provides areply message which reflects the outcome of the question-answeringprocess. Another type of automated agent performs a social referralfunction. Here, the automated agent identifies one or more humancontacts that may be able to assist the user with an issue identified inthe user's message. The following description sets forth additionaldetails regarding these types of automated agents, among other types.

As a general note, the following explanation sometimes specificallycalls out functions performed by human contacts and/or functionsdirected to human contacts, etc. Although not always explicitly stated,any such reference to a human contact is to be interpreted as alsoencompassing an automated agent. For example, as will be explainedbelow, an automated agent can generate a reply message that, in turn, isin response to another reply message that has been authored by a humancontact. But an automated agent can also generate a response to a replymessage that has been generated by another automated agent. This meansthat one automated agent can effectively “converse” with anotherautomated agent; one or more human users are the beneficiaries of theinformation imparted by this exchange between the automated agents.

Advancing to FIG. 2, this figure shows one way to implement the system100 of FIG. 1. The system 100 shown in FIG. 2 includes one or moresocial network modules 202, each for implementing a social networkservice of any type. The social network modules 202 will be described inthe context of a representative social network module 204, althoughdifferent social network modules 202 can also vary from each other inany manner

The social network module 204 can be implemented using any type ofcomputing functionality, such as one or more computer servers, one ormore data stores, routing functionality, and so forth. The computingfunctionality of the social network module 204 can be implemented at asingle site or may be distributed over plural sites.

The system 100 also includes one or more automated agent modules 206 forperforming any respective functions. In one case, the agent modules 206(or some of the agent modules 206) are implemented by a singleencompassing system. That system may allow the agent modules 206 toutilize shared system resources. In another case, at least some of theagent modules 206 can be implemented by separate respective systems. Inthe following, the agent modules 206 will be described in the context ofa representative agent module 208, although different agent modules 206can also vary from each other in any manner

The representative agent module 208 may interact with one or more agentresources 210, referred to in the singular below for brevity. The agentresource 210 refers to any functionality that enables the agent module208 to provide its service. For example, as mentioned above, some typesof agent modules perform a question-answering function in response tomessages posted to a social network service and/or other expressions ofinformation need. In this illustrative context, the agent resource 210represents a question-answering engine of any kind. As used herein, theterms “question-answering function” and “question-answering engine” havebroad connotation. A question-answering function generally refers to anymechanism for retrieving or otherwise providing information which mayanswer a question. In one case, for example, a question-answering enginerefers to a search engine which generates search responses using aranking algorithm and a search index. In another case, aquestion-answering engine refers to a database lookup mechanism. Inanother case, a question-answering engine refers to a mechanism foranalyzing the user's question and providing a natural-language responseto the user's question, and so on. Likewise, the question-answeringengine can provide different types of responses. In one case, thequestion-answering engine conveys a source (or sources) which providegeneral information which may be pertinent to the user's question, e.g.,by identifying one or more websites that may contain information thatanswers the user's question. Alternatively, or in addition, thequestion-answering engine can provide a factual-based response thatattempts to directly answer the user's question. Alternatively, or inaddition, the question-answering engine can offer opinion-relatedcontent in response to a user's question.

In those cases, in which the automated agent performs a search, theautomated agent can provide search results in a dynamic manner (forexample, in one case, taking, a few seconds at most). In another case,the automated agent can provide search results in potentially delayedfashion. The automated agent may opt for this latter approach to providesufficient time to investigate the user's query through any mechanism orcombination of mechanisms (e.g., through computation of any kind, byconsulting one or more human participants, etc.). The automated agentforwards a response to the user when it has collected sufficientinformation to answer the user's query; or the automated agent canprovide multiple staggered responses to the user as it receives relevantinformation.

In some cases, the agent resource 210 can be considered as an integralpart of the agent module 208. In other cases, the agent resource 210 andthe agent module 208 can be considered as separate functionalities,administered by the same entity or different respective entities. In onecase, the agent module 208 can interact with the agent resource 210 viaan interface (e.g., an application programming interface) provided bythe agent resource 210.

The agent module 208 can be implemented using any type of computingfunctionality, such as one or more computer servers, one or more datastores, routing functionality, and so forth. The computing functionalityof the agent module 208 can be implemented at a single site or may bedistributed over plural sites. In one case, the agent module 208 isadministered by the same entity that administers the social networkmodule 204. In another case, the agent module 208 and the social networkmodule 204 are administered by different respective entities.

The system 100 also includes a set of user devices 212. The user devices212 will be described in the context of a representative user device214, although different user devices 212 can also vary from each otherin any manner The user device 214 may represent any type of computingfunctionality, such as a personal computer, a computer workstation, agame console device, a set-top box device, a mobile telephone, abook-reader device, a personal digital assistant device, etc. In onecase, the user device 214 may include browser functionality (not shown)that allows a user to interact with the social network module 204 (and,indirectly, with the agent module 208).

A network 216 connects the various components illustrated in FIG. 2together. The network 216 can be implemented in any manner, e.g., by alocal area network, a wide area network (e.g., the Internet), etc., orany combination thereof. The network 216 can include any combination ofhardwired links, wireless links, routers, gateway functionality, nameservers, etc., governed by any protocol or combination of protocols.

Now referring to the social network module 204 in greater detail, thismodule can include a core service module 218 for implementing variousfunctions of the social network module 204. For example, the coreservice module 218 can manage user data associated with a plurality ofusers who maintain accounts with the social network module 204. Part ofthe user data for a particular user may comprise profile information.The profile information describes the characteristics of the user at anylevel of granularity. The profile information may also identify thecontacts of the user, and/or provide profile information of thosecontacts. The user data may also include messages that the user has sentand received via the social network module 204. A data store 220 canstore the user data.

The core service module 218 may also provide one or more user interfacepages that present user data for each user. For each user, these pagescan be accessed by the user and any authorized contacts of the user.Such pages are referred to generically herein as user pages. The coreservice module 218 can allow a user to interact with his or her userpage(s) by updating profile information, viewing existing messages,creating new messages, and so on. In some types of social networkservices, a user may also add messages to other users' personal pages.In some types of social network services, a user may also send andreceive direct messages to/from other users.

The core service module 218 may also include a contact adding/removingmodule. As the name suggests, the contact adding/removing module 222allows a user to add and remove human contacts to his or her list offriends. For example, in one scenario, a user may perform a search toidentify a user page associated with a particular user. The user maythen activate an appropriate command to add that user as a new humancontact of the user.

In one situation, the social network module 204 does not distinguishbetween human contacts and automated agents. In this case, the coreservice module 218 can add and remove automated agents in the samemanner that it adds and removes human contacts (e.g., using theadding/removing module 222). In another implementation, the socialnetwork module 204 can use a dedicated protocol and/or functionality toadd and remove automated agents to a list of contacts. Additionalinformation regarding one such protocol will be described below in thecontext of the explanation of FIG. 3.

The social network module 204 may use at least one optional agentapplication module 224. The agent application module 204 can performvarious functions that enable the social network module 204 to work inconjunction with the agent module 208. In some implementations, thesystem 100 adds the agent application module 204 to a user's accountwhen the user opts to interact with one or more agent modules. The typesof functions performed by the agent application module 204 areenvironment-specific, depending on the architecture and protocols usedby a particular social network module.

The social network module 208 can also include one or more interfacemodule(s) 226 (e.g., one or more application programming interfaces).The interface module(s) 226 provides an interface by which the agentmodule 208 can receive messages from the social network module 208 andpost reply messages to the social network modules 208.

As a final general point, the allocation of functions shown in FIG. 2can be modified in any manner For example, certain functions attributedto the social network module 204 can be performed by the agent module208, and vice versa. Alternatively, or in addition, certain functionsdescribed above as being performed by the social network module 204 orthe agent module 208 can instead be performed in a local manner by theuser device 214, in whole or in part.

FIG. 3 shows additional details regarding one possible construction ofthe representative agent module 208 shown in FIG. 2. By way of overview,in one implementation, the agent module 208 receives and responds to atleast one message posted by a user via the social network module 204,that message being a representative expression of information need. Thatmessage is referred to as an original message herein to indicate that itis a source message that provokes a response from the automated agent(and possibly from one or more human contacts). In most of the examplespresented herein, the original message corresponds to an initial messagein a thread that poses a question. But the original message need notpose a question. Further, in other cases, the original message maycorrespond to a reply message posted by any user in response to someearlier message or messages. In other words, the original message neednot occur at the start of a conversation thread. In that case, theautomated agent responds to the reply message. At any time, an automatedagent may also respond to two or more messages, such as an initialmessage from a user that poses an initial query together with a replymessage from one of the user's human contacts. To facilitateexplanation, however, FIG. 3 will be explained in the representativecontext of receiving and responding to a single original message thatposes a question.

Beginning at the top of the figure, a registration module 302 canprovide various services that allow a user to register the agent module208 as a “friend” in the social network service implemented by thesocial network module 204. More specifically, in one case, each agentmodule 208 can implement its own registration module 302. In anothercase, plural agent modules 206 can rely on a shared registration module302 to perform the registration task. In another case, some otherfunctionality (such as the social network module 204) can implement theregistration module 302.

The registration module 302 can adopt various different registrationprocedures, depending, in part, on the protocols and architectures usedby the different social network modules 202. In one procedure, a usermay visit a website provided by the registration module 302. There, theregistration module 302 can invite the user to select one or more socialnetwork modules to which he or she wishes to add agent modules asfriends. The registration module 302 can then present the user with amenu that identifies the different types of agent modules that can beadded as friends. The user selects one or more agent modules from thismenu.

In some cases, the above actions are sufficient to add a designatedagent module as a friend to the designated social network modules. Inother cases, the user may be asked to perform additional operations. Forexample, consider the case in which the user wishes to add the agentmodule 208 to a social network service implemented by the social networkmodule 204. The user may be asked to visit a profile page associatedwith the agent module 208, as provided by the social network module 204.There, the user may designate the agent module 208 as a friend. Thesocial network module 204 can then notify the registration module 302 ofthe user's action; the registration module 302 responds by logging intoan account associated with the agent application module 224 andaccepting the user's request. To repeat, the above-described procedureis representative, not limiting; different environments can usedifferent protocols for adding automated agents as friends. Theregistration module 304 can store registration information in a contactstore, identifying users who have selected the agent module 208 as acontact.

The agent module 208 also includes a message-receiving module 304. Themessage-receiving module 304 receives (or otherwise observes or detects)original messages that have been posted by users via the social networkmodule 204 via the interface module(s) 226, assuming that the users havepreviously added the agent module 208 as a contact to their respectivecontact lists. The message-receiving module 304 can use any protocol toreceive an original message. In one case, the social network module 204can push the original message to the message-receiving module 304. Forexample, in one approach, the social network module 204 may forward anoriginal message to a list of recipients, the agent module 208 being onesuch recipient. Or the social network module 204 can notify themessage-receiving module 304 that a new message has been generated for aregistered user. The message-receiving module 304 can then access thesocial network module 204 to identify and retrieve the new message. Inanother scenario, the message-receiving module 304 may actively poll thesocial network module 204 to determine whether any new original messageshave been posted by a registered user. If so, the message-receivingmodule 304 can retrieve the new original messages.

An appropriateness-of-reply determination (AORD) module 306 determineswhether it is appropriate to respond to an original message that hasbeen posted by a particular user. The AORD module 306 can considermultiple factors in making this decision, as specified by a set of rulesprovided in a rules store. For example, the AORD module 306 can drawfrom any one of the following non-exhaustive list of factors.

Structure Information. The AORD module 306 can examine the structure ofthe original message to determine whether it is appropriate to respondto the original message. For example, in one case, the AORD module 306is configured to respond to original messages that end in a questionmark. The AORD module 306 can also use any type of natural languageprocessing tool(s) to determine whether the user's original messagecontains a solicitation for help, either directly or indirectly (eventhough the original message may not end in a question mark). Forexample, an original message that contains the phrases, “I am tryingto,” or “I need,” or “I would like to,” etc. may be soliciting help fromothers. In other cases, the automated agent module 208 can respond tooriginal messages that raise certain topics, but do not otherwiseexpressly present questions.

Content Information. The AORD module 306 can examine the content of theoriginal message to determine whether it is appropriate to respond tothe original message. For example, certain agent modules may beconfigured to address certain respective topics. In this case, the AORDmodule 306 can mine the original message that has been received todetermine whether it includes keywords that pertain to its designatedtopic or topics. The determination of content information can also (oralternatively) be performed by a reply generation module 308, to bedescribed below.

Configuration Information. Each user may define set-up information whichdetermines the circumstances in which the agent module 208 will respondto an original message. The set-up information can be defined in anylevel of granularity, with respect to any criteria. The AORD module 306consults this set-up information in determining whether or not torespond to an original message.

Prior Responsiveness of the Agent Module. The agent module 208 canrecord frequency information which indicates the number of times that ithas responded to previous messages for a particular user within adefined time span, such as an hour, a day, a week, etc. The agent module208 can also maintain configurable threshold information whichdetermines a preferred maximum rate of response. The agent module 208can then consult the frequency information and threshold information todetermine whether it is appropriate to respond to an individual originalmessage under consideration, e.g., based on whether or not such aresponse will exceed the prescribed threshold information within thegiven time span.

Responsiveness of Human Contacts. The AORD module 306 can determinewhether one or more human contacts have responded to a user's originalmessage. This influences whether the agent module 208 will itselfrespond to the original message. In one approach, for instance, the AORDmodule 306 will not respond to an original message if one or more humancontacts (or any automated agents) have already responded to the messagewithin a predetermined period of time. After that time has expiredwithout a response, the AORD module 306 may decide that it isappropriate to generate a reply message. But this rule may be qualifiedin different ways. For example, the AORD module 306 may decide torespond to the original message if a thread of messages suggests that aquestion raised by an original message remains unresolved, e.g., becausethe user asks follow-up questions, etc.

Level of Confidence. The AORD module 306 can assess the level ofconfidence at which it is able to interpret the original message. TheAORD module 306 may choose to respond to the original message if it caninterpret the message with a confidence above a prescribed threshold;otherwise, the AORD module 306 may decline to respond to the message.The determination of level of confidence can also (or alternatively) beperformed by the reply generation module 308, to be described below.

Directedness of the Message. The AORD module 306 can determine whetherthe original message sent by the user is a direct message or anundirected message (meaning a message that is not targeted to anyparticular contact). In one implementation, the AORD module 306 canalways respond to a directed message because it is apparent that theuser is unambiguously asking a question to the agent module 208. Inother words, a determination that the message is a directed message canoverride any of the other AORD factors described above.

Triggering Event(s). In addition to the conditions described above, theAORD module 306 can determine that it is appropriate to the respond tothe original message if one or more triggering events have occurred.Different environments can define different types of triggering events.For example, one environment can determine that it is appropriate torespond to the original message if a reply message of a certain type hasbeen received from a human contact of the user, etc.

Norms of Social Interaction. In addition, the AORD module 306 candetermine whether and when it is appropriate to respond to the originalmessage based on the norms of social interaction associated with thesocial network service (in which the original message has been posted).The AORD module 306 can determine these norms through varioustechniques, such as by determining patterns in interactions that havetaken place using the social network service.

To repeat, the factors described above are representative, notexhaustive. The example scenarios set forth below describe additionaldetails regarding the operation of the AORD module 306.

A reply generation module 308 generates a reply message in response tothe original message once the AORD module 306 determines that it isappropriate to reply to the message. In doing so, the reply generationmodule 308 can rely on zero, one, or more agent resources (such as agentresource 210), such as one or more question-answering engines. The replygeneration module 308 is shown in FIG. 3 as a distinct component fromthe AORD module 306; but in some implementations, the AORD module 306and the reply generation module 308 may represent a single componentthat performs the functions of the AORD module 306 and the replygeneration module 308.

The reply generation module 308 can perform its task based on multipleconsiderations. For example, the reply generation module 308 can drawfrom any one of the following non-exhaustive list of considerations.

Semantic Content. The reply generation module 308 can use any naturallanguage processing and/or artificial intelligence tool(s) (for example)to determine the meaning of an original message (in optional conjunctionwith one or more reply messages). For example, the reply generationmodule 308 can use any analysis tool(s) to determine the informationthat is being sought by an original message (if, in fact, the message isa question). For example, the reply generation module 308 can use anentity extraction tool to extract information regarding salient entitiesmentioned in the original message, such as places, events, personalnames, business names, etc. Alternatively, or in addition, the replygeneration module 308 can forward the original message in its entirety,or in substantially unaltered form, to a question-answering engine. Thequestion-answering engine may employ its own analysis tools to determinethe information being sought by the original message.

Profile Information. The reply generation module 308 can consult profileinformation in generating a reply message. The profile information maypertain to the user who has posted the message and/or the user's humancontacts. For example, assume that the agent module 208 performs asocial referral service. If a user asked a question, “What is a goodrestaurant in Seattle?”, the reply generation module 308 can examine theprofile information of the user's human contacts to determine if any ofthese contacts live in Seattle and/or have a specified interest inSeattle. The reply generation module 308 can then generate a replymessage which invites the user to contact the identified human contacts,based on the assumption that those contacts may be able to help theuser. The reply generation module 308 can rely on a host of additionalfactors in deciding whether it is appropriate to identify human contactsin a reply message, as will be described below in greater detail. In onecase, the reply generation module 308 can gain access to profileinformation that is independently maintained by the social networkmodule 204, e.g., via the interface module(s) 226. Alternatively, or inaddition, the agent module 208 can maintain its own profile informationpertaining to users of the social network module 204.

Behavioral Information. The reply generation module 308 can consultbehavioral information which describes the behavior of users. That is,the behavioral information may pertain to the behavior of the user whohas posted the original message and/or the user's human contacts. Thebehavioral information may identify any user actions which have abearing on the generation of a reply message, including, but not limitedto: sending messages via the social network module 204, making browsingselections, making online purchases, specifying preferences (e.g., likesand dislikes), and so on. For example, suppose again that the agentmodule 208 performs a social referral function. Again, assume that auser solicits advice about restaurants in Seattle. The reply generationmodule 308 can identify one or more of the user's human contacts whohave sent or replied to messages pertaining to the topic of restaurantsin Seattle. In another scenario, the reply generation module 308 canidentify one or more of the user's human contacts who have established aregular pattern of interaction with the user. The reply generationmodule 308 can then generate a reply message which invites the user tocontact the identified human contacts, based on the assumption thatthose contacts may be able to help the user. The reply generation module308 can mine this kind of behavioral information from any sources, suchas the social network module 204, the agent module 208 itself, a thirdpart entity, etc.

Level of Confidence. The reply generation module 308 can assess thelevel of confidence at which it has generated a reply that issufficiently germane to the original message. The reply generationmodule 308 can use various metrics to make this assessment. In one case,the reply generation module 308 can positively weight replies that arebuilt from information extracted from trusted sources (e.g., fromtrusted websites).

To repeat, the considerations described above are representative, notexhaustive. The example scenarios set forth below describe additionaldetails regarding the operation of the reply generation module 308.

A reply formulation module 310 formulates a reply message based oninformation extracted by the reply generation module 308. The replyformulation module 310 is shown in FIG. 3 as a distinct component fromthe reply generation module 308 to facilitate explanation; but in someimplementations, the reply generation 308 and the reply formulationmodule 310 may represent a single component that performs the functionsof the reply generation module 308 and the reply formulation module 310.

In one implementation, the reply formulation module 310 may perform itstask by drawing on a collection of templates provided in a templatestore. Each template can provide a model for phrasing a particularresponse to a certain type of question. For example, assume that theuser again appears to be asking for advice on local restaurants. Thereply formulation module 310 can choose a template which is germane tothis context. The reply formulation module 310 can then customize thetemplate based on information supplied by the reply generation module308. For example, the template may read, “You may be interested in therestaurant ______ , having the website ______ ,” which can be customizedto read to provide a restaurant name and URL provided by the replygeneration module 308. In some cases, the reply formulation module 310can provide multiple templates for phrasing a particular reply message.The reply formulation module 310 can randomly select a template fromthis set of candidate templates to provide variety in its responses. Inaddition, or alternatively, the reply reformulation module 310 can usenatural language functionality or similar tools to generate a response.

Finally, a reply forwarding module 312 forwards the reply message to atarget destination via the interface module(s) 226. Different targetdestinations may be appropriate for different types of social networkservices. In one case, for instance, the reply forwarding module 312 canforward the reply message to a user page associated with the user whoposted the original message, as maintained by the social network module204, and/or to some other page maintained by the social network module204. The reply message is then accessible for review by the user and theuser's contacts (assuming that the reply message is not a privatemessage). The user and any of the user's human contacts may then, inturn, respond to the automated agent's response message. Alternatively,or in addition, the reply forwarding module 312 can forward the replymessage directly to both the user and/or the user's human contacts.

More generally, the reply forwarding module 312 can determine a type ofreply message to send to the target destination. For example, a firsttype of reply message pertains to a public message that is accessible tothe user and at least one other individual. A second type of replymessage pertains to a private message that is accessible to only theuser. The reply forwarding module 312 can determine what type of replymessage to send based on one or more considerations, such as: a contentof the original message; a manner in which the original message has beenposted to the social network module 204; and/or a content of the replymessage to be sent to the user, and so on. For example, if the originalmessage and/or reply message have content that appears to be of apersonal nature (e.g., referring to a medical or financial topic), thenthe reply forwarding module 312 can invoke a private response channelAlternatively, or in addition, the user may have expressly invoked aprivate response mode (in the illustrative manner to be describedbelow).

In general, the agent module 208 can be designed in an extensible mannerAs such, a developer can produce a modified module, such a modifiedreply generation module, and substitute that module in place of anexisting module of that type. Further, the rules, templates, algorithms,etc. employed by individual modules are extensible in design.

In one implementation, the agent module 208 of FIG. 3 performs a singlefunction. In contrast, FIG. 4 shows an agent module 402 that allocatesseparate functionalities (404, 406, 408, . . . ) to different respectivefunctions. The agent module 402 also includes an agent subtypedetermination module 410 which determines a type of functionality thatis being invoked, e.g., in response to the receipt of an originalmessage of a particular type. For example, assume that the agent module402 performs a question-answering function, a social referral function,and a translation function. Further assume that the user presents anoriginal message which appears to be asking a relatively narrow factualquestion. In response, the agent subtype determination module 410 candecide to invoke the search functionality to address this question.Alternatively, assume that a user appears to be asking for the opinionof other users regarding a particular topic. Here, the agent subtypedetermination module 410 can decide to invoke the social referralfunctionality to address this question. In still other cases, the agentsubtype determination module 410 may invoke plural differentfunctionalities to address the same original question; these pluraldifferent functionalities may contribute to the same reply messageand/or may contribute to multiple separate reply messages.

FIG. 5 shows logging functionality 502 that can be implemented by thesocial network module 204, the agent module 208, and/or or some otherfunctionality. The logging functionality 502 includes a collectionmodule 504 for storing collected information in one or more data stores506. The collected information can pertain to any information whichcharacterizes the operation of the system 100. For example, thecollected information may describe questions that have been asked, replymessages generated by human contacts, reply messages generated byautomated agents, etc. In addition, or alternatively, the collectedinformation can describe other behavior performed by users; for example,the collected information can indicate the manner in which the usersresponded to reply messages generated by the automated agents (e.g., byindicating whether or not the users clicked on links provided by thehuman agents, purchased recommended items, etc.).

The collection module 504 can forward the collected information to anytype of target functionality for use in improving the performance of thetarget functionality. For example, collection module 504 can send thecollected information to a search engine for the purpose of improvingthe performance of a ranking algorithm provided by the search engine.Alternatively, or in addition, the collection module 504 can provide thecollected information to any agent module for use in improving itsability to provide pertinent replies to original messages. For example,an agent module can determine whether its reply messages were viewedfavorably by recipients of those messages (e.g., based on whether thesereply messages led to clicks of recommended links, whether therecipients indicated that they “liked” the reply messages, whether therecipients propagated the reply messages to others (e.g., using“retweets”), and so forth). Based on this feedback, the agent module canpositively weight the response strategies that received favorableresults and negatively weight the response strategies that received poorresults. In one approach, an agent module can use machine learningtechniques to improve its performance based on the collected information(which constitutes training data). A search engine can adapt itsperformance in a similar manner

FIGS. 6-11 describe the operation of different automated agents thatperform different respective functions. More specifically, in thefollowing explanation, it will be assumed that each automated agentperforms a single function. But, as explained above (with reference toFIG. 4), any automated agent can also perform two or more functions.

Starting with FIG. 6, this figure shows an example of the operation ofan automated agent that performs a question-answering function. Assumethat a user, Sue Smith, accesses a user page 602 provided by a socialnetwork service (that user page being associated with the user, SueSmith). There, the user enters an original message 604 that poses aquestion, “Are there any good sushi restaurants in Bellevue?” Forexample, the user can enter this original message as a status message(e.g., in the context of an implementation that builds on top of thefunctionality provided by Facebook, Inc.).

After posting the original message 604, any of the user's human contactscan access and review the original message 604. For example, the user'shuman contacts can access Sue Smith's user page 602 (or some othermechanism or forum through which the original message 604 is accessible)and review the original message 604. Alternatively, or in addition, thesocial network service can forward the original message 604 to the humancontacts. One or more automated agents (that have been designated ascontacts of Sue Smith) can also access the original message 604. Forexample, as explained above, an automated agent can receive the messageusing a pull technique, a push technique, or combination thereof.

In the scenario of FIG. 6, the automated agent performs aquestion-answering function based on the original message 604. First,the automated agent can decide whether it is appropriate to respond tothe original message 604. If so, the automated agent can generate aquery based on the terms used in the original message 604, e.g., usingan entity extraction technique and/or some other natural languageprocessing tool(s). In the present case, the automated agent mayconstruct a query based on the salient keywords “sushi,” “restaurants,”and “Bellevue.” Or the automated agent can generate a query whichcomprises the original message in unaltered or substantially unalteredform. The automated agent then submits the search query to aquestion-answering engine (e.g., a search engine) and receives a searchresult in response. The automated agent can then formulate a replymessage 606 on the basis of the search result. Finally, the automatedagent posts the reply message 606 on the user's page 602.

The human contacts may also decide to respond before and/or after theautomated agent, as indicated by the reply messages 608. In some cases,a human contact may choose to respond to the original message 604. Inother cases, a human contact may decide to respond to one or more replymessages, including the reply message 606 of the automated agent.

Further, the system 100 can provide different automated agents that areconfigured to provide answers in different subject matter domains. TheAORD module 306 and/or the reply generation module 308 of each suchautomated agent can be configured to determine whether an originalmessage pertains to its topic of expertise. If so, the agent module 208will attempt to address the question; if not, the automated agent willignore the question. For example, different automated agents canaddress, respectively, dining-related topics, travel-related topics,medical-related topics, financial-related topics, and so on. Otherautomated agents can answer questions regarding two or more subjectmatter domains.

Other automated agents can address questions and/or provide answerswhich emphasize regional issues. For example, such an automated agentcan recommend local businesses in response to a query. The location ofthe person posing a question can be determined in various ways, e.g.,based on the user's profile information, reverse-IP lookup strategies,cell tower or WiFi triangulation techniques, GPS techniques, etc.

FIG. 7 describes the operation of an automated agent that also performsa question-answering function. But in this case, the automated agent isconfigured to provide targeted factual-related information in responseto a query, rather than general information which may be of possibleinterest to the user. For example, assume that the user Sue Smithaccesses her user page 702 and enters the original message 704, “What isthe zip code of Utica, N.Y.” The automated agent responds by performinga search, to retrieve an indication that the zip code is 13502. Theautomated agent formulates a reply message 706 which conveys theidentified factual information. The type of factual-based automatedagent shown in FIG. 7 may be invoked when the automated agent detectscertain fact-based themes in the original message, e.g., pertaining toweather-related topics, movie schedule topics, sports score topics, etc.In another case, a single automated agent can provide bothlink-containing general information and targeted factual information.That is, the automated agent can provide targeted factual information ifpossible; if not, it may provide a link containing more generalinformation of possible interest to the user.

Another type of automated agent responds to a question or otherexpression of an information need by providing an opinion or advice. Forexample, a user may pose a question that reads, “Has anybody beensuccessful in refinancing their mortgage?” A political automated agentmay respond by expressing some type of political opinion about thehousing market.

FIG. 8 shows an example in which an automated agent performs a socialreferral function. In this case, the user Sue Smith accesses her userpage 802 and enters the same original message 804 in an attempt tosolicit advice regarding sushi restaurants in Bellevue. In response, theautomated agent can consult the profile information associated with SueSmith's human contacts. And from that information, the automated agentcan determine that John Taylor (one of Sue's contacts) lives and/or wasraised in the Bellevue area (as conveyed by the user's profileinformation), and therefore may be familiar with its local restaurants.More specifically, the automated agent can apply a distance-based filterto determine whether location information specified in the originalmessage is sufficiently close to location information specified in ahuman contact's profile. In addition, or alternatively, the automatedagent can determine that John Taylor has expressed an interest in Asiandining (as conveyed by that user's profile information and/or behavioralinformation). In response, the automated agent can generate and send areply message 806 that reads, “Your friend John Taylor may knowsomething about Asian food.” In response to this recommendation, theuser Sue Smith may decide to contact John Taylor.

The automated agent can apply any number of factors in deciding whetherit is appropriate to identify a particular human contact (in addition tothe information imparted by profile information and behavioralinformation). Such factors include any one or more of the following.

Contact Preference Information. The automated agent can take intoconsideration preference information established by the user's humancontacts (e.g., as specified in a set-up phase). The preferenceinformation expresses a human contact's willingness to assist anotheruser who poses a question. More specifically, each human contact canexpress his or her preferences in any level of granularity. For example,the human contact can prohibit (or permit) participation with respect tocertain people, certain topics, certain dates, certain times of days,and so on.

Relationships among Users. The automated agent can take intoconsideration the relationships between the user and each of her humancontacts in deciding whether it is appropriate to contact a particularhuman contact. For example, the user may not wish to bother workcolleagues for certain topics or any topic. The automated agent can alsoconsider the strength of the relationship between a user and each of hisor her human contacts. In one implementation, the automated agent cantreat the number of shared friends as an indicator of closeness ofrelationship; that is, if a user and a human contact have a significantnumber of friends in common, the user and the human contact likely havea close relationship.

In some cases, the automated agent can identify two or more humancontacts in a single reply message. The automated agent can applyvarious considerations in determining the appropriateness of combiningcontacts together in this manner For example, it may be consideredinappropriate to generate a reply message that lists two people who donot know each other, or who dislike each other, etc.

Frequency of Response. The automated agent can take into considerationthe number of times that each human contact has been asked to assistother users within a predetermined period of time, e.g., within the lasthour, day, week, etc. The automated agent can apply this considerationto avoid inundating a human contact with too many requests for help in ashort period of time.

Level oflnteraction. The automated agent can gauge how often the userinteracts with each of her human contacts in deciding whether toidentify a particular human contact in a reply message. Based on onestrategy, the automated agent can favor those human contacts whoregularly interact with the user, based on the assumption thatcommunication with those users is natural and expected. However, asnoted above, the automated agent may attempt to avoid inundating any onehuman contact with too many help requests.

Availability. The automated agent can take into consideration theavailability of each human contact. For example, the automated agent mayfavor those human contacts who are presently online

Favors Owed. A user who has posted a message may have answered aquestion posed by one of her human contacts on one or more prioroccasions. The automated agent can take this information intoconsideration in deciding whether to identify a particular human contactin response to the user's own question. That is, the automated agent canchoose a human contact who has received help from the user because thisperson may feel obligated to help the user out in the presentcircumstance.

The above-noted factors are cited by way of example, not limitation. Anautomated agent that performs a social referral function can take intoconsideration additional factors. Further, the automated agent can bedesigned in an extensible manner to accommodate the introduction of newfactors and the modification of existing factors.

FIG. 9 shows an example of an automated agent that performs atranslation function. Here, the user Sue Smith accesses her user page902 and enters the original message 904, “Anybody know how to say‘goodbye’ in Spanish?” The automated agent detects that this messagepertains to a foreign language (e.g., due to the presence of the word“Spanish,” coupled with the word placed in quotations, i.e., “goodbye”).In response, the automated agent consults a translation dictionary andgenerates a reply message 906 that notifies the user of the translationof the word “goodbye.” In this case, the agent resource that isconsulted corresponds to a translation dictionary, rather than a searchengine.

FIG. 10 shows an example of an automated agent that is sponsored by anentity, such as a commercial entity. The automated agent in this casemay bias its results towards products or services associated with thesponsoring entity. For example, the user accesses her user page 1002 andenters the original message 1004, “I need a new camera for my vacation.Any suggestions?” An automated agent sponsored by a camera manufacturermay detect the telltale word “camera,” which triggers a response fromthis automated agent. Namely, the automated agent responds with thereply message 1006 that promotes a particular camera produced by thecamera manufacturer. In some cases, a sponsored automated agent can alsooffer coupons or discounts of any kind. In addition, or alternatively,the automated agent can select a coupon for presentation to a user basedon profile information associated with the user.

FIG. 11 shows a final example of an automated agent that interjectsfamous quotes into a conversation. Here, the user Sue Smith accesses heruser page 1102 and enters an original message 1104 that contains theword “loved.” The automated agent detects this telltale word anddelivers a reply message 1106 that pertains to the topic of love.

Note that tone adopted by the automated agent in FIG. 11 is somewhatsharp. In general, automated agents can be designed to exhibit any styleof presentation or “personality.” For example, an automated agent can bedesigned to adopt humorous mannerisms, sarcastic or flippant mannerisms,slang or “hip” mannerisms, and so forth.

Generally, the system 100 can be constructed to have an extensibledesign with respect to automated agents. This permits a developer tocreate a new automated agent and “plug” it into the extensible frameworkof the system 100, providing that the new automated agent conforms to aninterface model adopted by the extensible framework.

As another general feature, an automated agent can have the indirecteffect of stimulating conversation. For example, a human contact may bemore inclined to contribute to an ongoing conversation that has at leastone other response, even if that response is a reply message generatedby an automated agent. In addition, a human contact may be intrigued bythe response of the automated agent. For example, a human contact maywish to supplement or correct the information provided by the automatedagent. Or the human contact may find the reply message unexpected andpotentially humorous, even if that reply message is not completely onpoint.

FIG. 12 shows an example of the operation of an automated agent thatinteracts with a social network service that involves the sending andreceiving of short messages. In this case, the user accesses her userpage 1202 and enters the same original message 1204 as before,pertaining to sushi restaurants in Bellevue. In this case, the socialnetwork service sends the original message 1204 directly to all of thefollowers of the user Sue Smith. Assume that an automated agent thatperforms a question-answering function is one of the followers thatreceives the original message 1204. It may respond by generating andsending the reply message 1206. In this case, the automated agent cansend the reply message 1206 using the “@” convention, e.g., by sendingit back to the user Sue Smith in a message that begins “@SueSmith: . . .. ”.

FIG. 13 shows an example in which the user, Sue Smith, accesses her userpage 1302 to generate a direct message to an automated agent, e.g.,using a direct input mechanism 1304. The user can achieve the sameresult in Twitter using the “@” convention, among other techniques. Inresponse, the automated agent can send a private reply message that isaccessible to only the user Sue Smith. This is different than the replymessages described earlier, which are accessible to all of the user'scontacts, and potentially accessible to the general public. In otherwords, sending a direct message can be used to instruct the automatedagent to send a private reply message in return (this being one possibleway, among other possible ways, of invoking a private reply). Thisapproach may also be appropriate to expressly instruct the automatedagent to answer the question (because otherwise there is a possibilitythat the automated agent may choose to ignore the question). Thisapproach may also be appropriate to solicit a more detailed reply fromthe automated agent, and/or a reply regarding a private topic.

FIG. 14 describes a scenario in which the user, Sue Smith, accesses heruser page 1402 and generates the original message 1404, “Spare ticket!Anybody want to cheer on the Jaguars on Saturday?” It is apparent tohuman users that the user is referring to a football game, where one ofthe teams is named the “Jaguars.” But this may not be apparent to anautomated agent. If the automated agent considers the original message1404 ambiguous, it may opt to wait until one or more human contactsoffer reply messages. These reply messages may clarify the nature of theoriginal message 1404. For example, in the example of FIG. 14, the humancontact John Taylor submits the reply message 1406, “Thanks, but not me.I have had enough of the traffic congestion near the football stadium.”This message clarifies that the “Jaguars” in question is a footballteam, not an animal or an automobile. At this juncture, the automatedagent may choose to provide a reply message 1408. More generally stated,the automated agent can take into consideration any number of messagesin generating a reply message. The messages can be extracted from asingle thread or multiple threads.

In yet other cases, the automated agent can expressly send a messagewhich requests clarification from the user and anyone else that choosesto answer. For example, the automated agent can generate a reply messagethat reads, “Do you mean Jaguars the animal, or the sports team, or theautomobile, or something else?” Responses to these questions can bestored by the logging functionality 502 and later used to improve theperformance of the automated agent and/or the question-answering engine.

In yet other cases, the automated agent can solely respond to a replymessage sent by a human contact or a user's follow-up message. Forexample, suppose that a human contact recommends a restaurant inresponse to a question from the user. The automated agent can providethe telephone and address of the restaurants, etc.

FIG. 15 provides an example in which an automated agent provides amessage 1502 directly to the user John Taylor, asking this user if hewould like to assist Sue Smith regarding a question that she has posed.In one case, John Taylor can access this message via his own user page1504, hosted by the social network service. This approach is in contrastto the scenario of FIG. 8, in which the automated agent notifies SueSmith that John Taylor may be able to assist her with her question. Orthe automated agent can combine the functionality illustrated in FIGS. 8and 15.

B. Illustrative Processes

FIGS. 16-23 show procedures which explain one manner of operation of thesystem 100 of FIG. 1. Since the principles underlying the operation ofthe system 100 have already been described in Section A, certainoperations will be addressed in summary fashion in this section.

Starting with FIG. 16, this figure shows a procedure 1600 by which thesystem 100 registers one or more agent modules as friend(s) of a user.In block 1602, the system 100 can invite the user to select one or moreagent modules for application to one or more social network modules. Inblock 1604, the system 100 registers the agent module(s) as friend(s) ofthe user. Different environment-specific protocols can be used toperform the procedure 1600, as set forth in Section A. FIG. 17 shows acomplementary procedure 1700 by which the system 100 can remove one ormore agent modules as friends. In block 1702, the system 100 receives arequest from a user to remove one or more agent modules as friends. Inblock 1704, the system 100 removes the agent module(s) as friend(s).

FIG. 18 shows a procedure 1800 by which an agent module can respond toan original message posted by a user via a social network module (orother information need expressed via the social network module),explained here in summary fashion. The original message may correspondto an initial message which poses a question, a reply message, or acombination of plural messages of any type. To facilitate description,it will be assumed, however, that the agent module receives and respondsto a single message.

In block 1802, the agent module receives (or otherwise detects orobserves) an original message that indicates that a user has generatedand posted an original message via a social network module. The agentmodule can perform this function using a pull technique, a pushtechnique, or a combination thereof. In block 1804, the agent module cantake into consideration multiple factors to determine whether it isappropriate to reply to the original message. In block 1806, the agentmodule generates a reply to the original message, again taking intoaccount one or more considerations. In block 1808, the agent moduleformulates a reply message. Any part of blocks 1804-1808 may bealternatively merged into a single operation of generating a replymessage. Finally, in block 1810, the agent module sends the replymessage to a target destination, e.g., either a user page of the userwho generated the original message, and/or to individual human contacts,etc. The agent module can also consult one or more factors to determinean appropriate manner in which to the send the reply message to thetarget destination, as described in Section A.

FIG. 19 shows a procedure 1900 which explains one manner of operation ofthe appropriateness-of-reply determination (AORD) module 306 of FIG. 3,explained here in summary fashion. In block 1902 the AORD module 306assesses pertinent factors that may have a bearing on whether or not torespond to an original message. Those factors include the structure andcontent of the original message, express set-up information whichgoverns the manner of operation of the agent module for a particularuser, the prior responsiveness of the agent module, the currentresponsiveness of human contacts, the occurrence(s) of one or moretriggering events, and so on. These factors were described in greaterdetail in Section A. In block 1904, the AORD module 306 determineswhether to respond based on the factors summarized in block 1902.

FIG. 20 shows a procedure 2000 which explains one manner of operation ofthe reply generation module 308 of FIG. 3, explained here in summaryfashion. In block 2002 the reply generation module 308 assessespertinent considerations that may have a bearing on how to construct areply message. Those factors include the semantic content of theoriginal message (and/or any reply message(s)), profile information,behavioral information, and so on. These considerations were describedin greater detail in Section A. In block 2004, the reply generationmodule generates a reply message based on the considerations summarizedin block 2002.

FIG. 21 shows a procedure 2100 that represents one manner of operationof an agent module that performs a question-answering function,described here in summary fashion. In block 2102, the agent moduleformulates a query based on an original message. In block 2104, theagent module sends the query to a question-answering engine (e.g., asearch engine) or some other agent resource. In block 2106, the agentmodule receives a response from the question-answering engine. In block2108, the agent module generates a reply message based on the responsereceived from the question-answering engine. In one implementation, theagent module, in conjunction with the question-answering engine canperform a personalized search for the user based on user informationthat is extracted from the user's profile information, behavioralinformation, and/or other sources.

FIG. 22 shows a procedure 2200 that represents one manner of operationof an agent module that performs a social referral function, describedhere in summary fashion. In block 2202, the agent module identifies atleast one human contact that is pertinent to the original message, e.g.,using profile information, and/or behavioral information, etc. In block2204, the agent module generates a reply message based on the humancontact(s) identified in block 2202.

FIG. 23 shows a procedure 2300 that explains one manner of operation ofthe logging functionality 502 of FIG. 5, described here in summaryfashion. In block 2302, the logging functionality collects informationregarding the operation of the system 100, such as questions posed,answers given, etc. In block 2304, the logging functionality 502 sendsthe collected information to any target functionality for use inimproving its performance. The target functionality may comprise asearch engine, an agent module, etc.

As a closing point, the system 100 described herein can employ variousmechanisms to ensure the privacy of user data maintained by the system.For example, the system 100 can allow a user to expressly opt in (andthen expressly opt out of) the provisions of the system 100. The system100 can also provide suitable security mechanisms to ensure the privacyof the user data (such as encryption mechanisms, password-protectionmechanisms, etc.). The system 100 can also allow a user to control themanner in which the system 100 uses the data. The system 100 can alsoallow the user to delete his or her user data at any time.

C. Representative Processing Functionality

FIG. 24 sets forth illustrative computing functionality 2400 that can beused to implement any aspect of the functions described above. Forexample, the computing functionality 2400 can be used to implement anyaspect of the system 100 of FIG. 1, e.g., as implemented in theembodiment of FIG. 2, or in some other embodiment. In one case, thecomputing functionality 2400 may correspond to any type of computingdevice that includes one or more processing devices. In all cases, thecomputing functionality 2400 represents one or more physical andtangible processing mechanisms.

The computing functionality 2400 can include volatile and non-volatilememory, such as RAM 2402 and ROM 2404, as well as one or more processingdevices 2406 (e.g., one or more CPUs, and/or one or more GPUs, etc.).The computing functionality 2400 also optionally includes various mediadevices 2408, such as a hard disk module, an optical disk module, and soforth. The computing functionality 2400 can perform various operationsidentified above when the processing device(s) 2406 executesinstructions that are maintained by memory (e.g., RAM 2402, ROM 2404, orelsewhere).

More generally, instructions and other information can be stored on anycomputer readable medium 2410, including, but not limited to, staticmemory storage devices, magnetic storage devices, optical storagedevices, and so on. The term computer readable medium also encompassesplural storage devices. In all cases, the computer readable medium 2410represents some form of physical and tangible entity.

The computing functionality 2400 also includes an input/output module2412 for receiving various inputs (via input modules 2414), and forproviding various outputs (via output modules). One particular outputmechanism may include a presentation module 2416 and an associatedgraphical user interface (GUI) 2418. The computing functionality 2400can also include one or more network interfaces 2420 for exchanging datawith other devices via one or more communication conduits 2422. One ormore communication buses 2424 communicatively couple the above-describedcomponents together.

In closing, the description may have described various concepts in thecontext of illustrative challenges or problems. This manner ofexplication does not constitute an admission that others haveappreciated and/or articulated the challenges or problems in the mannerspecified herein.

Although the subject matter has been described in language specific tostructural features and/or methodological acts, it is to be understoodthat the subject matter defined in the appended claims is notnecessarily limited to the specific features or acts described above.Rather, the specific features and acts described above are disclosed asexample forms of implementing the claims.

What is claimed is:
 1. A method, performed by an automated agent module executing on one or more computers, the method comprising: accessing a messaging module comprising user accounts of respective users registered to a messaging service, each user account comprising a respective contact list, the messaging service managing messages submitted thereto such that messages posted by a corresponding user account are delivered to the user accounts in the corresponding user account's contacts list; receiving, by the automated agent module, a message sent to the automated agent module responsive to the message being posted from the user account to the messaging module, the automated agent module and the users in the user's contact list having been previously added to the user's contact list by the user using a contact adding/removing module of the messaging service, the message having been sent to the automated agent module due to the automated agent module being a contact in the contact list of the user; responsive to receiving the message, analyzing content of the message to decide whether the automated agent module is to reply to the message; responsive to deciding to reply to the message, generating a reply message by passing the content of the message, or indicia thereof, to a search engine and forming the reply message based on a corresponding search result of the search engine; and posting the reply message to the user account in association with replies to the message from the user's other contacts.
 2. A method according to claim 1, further comprising adding the agent module to the user's contact list based on the user interacting with the agent module.
 3. A method according to claim 1, further comprising adding the agent module to the user's contact list based on the user interacting with a profile page associated with the agent module.
 4. A method according to claim 1, further comprising enabling the user to define setup information that defines conditions under which the agent module will respond to original messages posted to the messaging service.
 5. A method according to claim 1, further comprising determining whether the agent module will respond to the message by determining whether one or more human contacts have responded to the message.
 6. A method according to claim 1, further comprising determining, by the agent module, whether the message corresponds to a topic for which the agent module is configured to generate replies.
 7. A method according to claim 1, wherein the agent module generates the reply message based at least in part on user information extracted from profile information of the user.
 8. A method performed by one or more processing devices to use an automated agent module executed by the one or more processing devices, the method comprising: detecting an original message posted by a user to an instant messaging system, wherein the user and contacts of the user post messages to the instant messaging system, the automated agent module having been designated as one of the contacts of the user of the instant messaging system, the contacts including the automated agent module and at least another user of the instant messaging system, wherein the instant messaging system responds to the original message by selecting and notifying at least two of the contacts of the original message, the selected contacts including the other user and the automated agent module; based on the original message, generating, by the automated agent module, an automated reply message to the original message; and submitting, by the automated agent module, the automated reply message to the instant messaging system, wherein the instant messaging system responds by providing the automated reply message to the user, wherein the automated reply message and a reply message from the other user are provided to the user as replies to the original message.
 9. A method according to claim 8, wherein the generating comprises: formulating a query based on the original message; sending the query to a question-answering engine; receiving a response from the question-answering engine; and generating the reply message based on the response;
 10. A method according to claim 8, wherein the instant messaging system is provided by a social network service.
 11. A method according to claim 8, wherein the automated agent module determines to generate the reply based on a feature of the original message and/or the user.
 12. A method according to claim 8, further comprising graphically associating the automated agent module with the reply message in a user interface that posts the reply message.
 13. A method according to claim 8, wherein a determination whether to have the automated agent module reply to the original message is made based on content of the original message, a feature of another reply to the original message, and/or a feature of the user.
 14. A method performed by a messaging service, the messaging service comprising a plurality of servers, the messaging service maintaining lists of contacts of respective users of the messaging service, the messaging service enabling users thereof to add and remove users and automated agents to the contact lists, the method comprising: receiving a request to add an automated agent to the contact list of a user of the messaging service, the user's contact list having contacts comprising other users of the messaging service and the automated agent; receiving an inquiry message posted by the user to the messaging service; responding to the posting of the inquiry message by determining, based at least in part on the presence of the automated agent in the user's contact list, that the inquiry message is to be replied to by the automated agent, and in response sending the inquiry message or a notification thereof, via the messaging service, to the automated agent; further responding to the posting of the inquiry message by sending the inquiry message or a notification thereof, via the instant messaging service, to a contact of the user that is a first user of the messaging service; receiving a reply from the automated agent, the reply comprising information obtained or generated by the automated agent according to the inquiry message or notification thereof, the information corresponding to the inquiry message; receiving a first reply to the inquiry message from the first user; and providing the reply and the first reply to the user via the messaging service.
 15. A method according to claim 14, wherein a user interface displaying messages to the user indicates that the reply and the first reply are replies to the inquiry message.
 16. A method according to claim 14, wherein the automated agent communicates with a search engine in correspondence with the inquiry message or notification thereof, and in response receives information from the search engine that is incorporated into the reply.
 17. A method according to claim 14, further comprising adding the automated agent to the user's contact list using a mechanism that allows other users to be added to the user's contact list.
 18. A method according to claim 14, further comprising adding the automated agent to the user's contact list based on the user interacting with a profile page associated with the agent module.
 19. A method according to claim 14, further comprising enabling the user to define setup information that is used to make determinations of whether the agent module will respond to original messages.
 20. A method according to claim 14, further comprising determining whether the automated agent will respond to the inquiry message based on replies to the inquiry message from human contacts. 